home *** CD-ROM | disk | FTP | other *** search
/ Info-Mac 4 / Info_Mac IV CD-ROM (Pacific HiTech Inc.)(August 1994).iso / Development / General / PTR-TCL v2.1 / 4) header symbols / main.c next >
Text File  |  1994-02-09  |  3KB  |  172 lines

  1. /*
  2.  * main.c
  3.  */
  4.  
  5.  
  6. void Idle ( void ) ;
  7. void Message ( unsigned char * ) ;
  8.  
  9. unsigned char * folder_to_munge = "\pTO MUNGE" ;
  10. unsigned char * message_file = "\pMESSAGES" ;
  11.  
  12. Handle windowText = NULL ;
  13. WindowPtr window = NULL ;
  14. short vRefNum = 0 ;
  15. Boolean done = 0 ;
  16.  
  17.  
  18. extern void MungeFolder ( long parID ) ;
  19.  
  20.  
  21. static void
  22. Try ( short code ) {
  23.  
  24.     if ( code ) {
  25.         DebugStr ( "\pFailure!" ) ;
  26.     }
  27. }
  28.  
  29.  
  30. static void
  31. InitMac ( ) {
  32.     InitGraf ( & qd . thePort ) ;
  33.     InitFonts ( ) ;
  34.     InitWindows ( ) ;
  35.     InitMenus ( ) ;
  36.     TEInit ( ) ;
  37.     InitDialogs ( NULL ) ;
  38. }
  39.  
  40.  
  41. static void
  42. UpdateWindow ( ) {
  43.  
  44. Rect r = window -> portRect ;
  45.  
  46.     InsetRect ( & r , 3 , 3 ) ;
  47.     TextFont ( GetAppFont ( ) ) ;
  48.     TextSize ( GetDefFontSize ( ) ) ;
  49.     HLock ( windowText ) ;
  50.     TextBox ( * windowText , GetHandleSize ( windowText ) , & r , teJustLeft ) ;
  51.     HUnlock ( windowText ) ;
  52. }
  53.  
  54.  
  55. static void
  56. Click ( EventRecord * er ) {
  57.  
  58. WindowPtr win ;
  59. short code ;
  60. Rect limit = ( * GetGrayRgn ( ) ) -> rgnBBox ;
  61.  
  62.     InsetRect ( & limit , 3 , 3 ) ;
  63.     code = FindWindow ( er -> where , & win ) ;
  64.     switch ( code ) {
  65.     case inSysWindow :
  66.         SystemClick ( er , win ) ;
  67.         break ;
  68.     case inDrag :
  69.         DragWindow ( win , er -> where , & limit ) ;
  70.         break ;
  71.     }
  72. }
  73.  
  74.  
  75. void
  76. Idle ( ) {
  77. EventRecord er ;
  78.  
  79.     WaitNextEvent ( -1 , & er , 0L , NULL ) ;
  80.     switch ( er . what ) {
  81.     case mouseDown :
  82.         Click ( & er ) ;
  83.         break ;
  84.     case updateEvt :
  85.         SetPort ( window ) ;
  86.         BeginUpdate ( window ) ;
  87.         EraseRect ( & ( window -> portRect ) ) ;
  88.         UpdateWindow ( ) ;
  89.         EndUpdate ( window ) ;
  90.         break ;
  91.     }
  92. }
  93.  
  94.  
  95. static void
  96. SetWindowText ( unsigned char * string ) {
  97.  
  98.     PtrToXHand ( string + 1 , windowText , * string ) ;
  99.     SetPort ( window ) ;
  100.     UpdateWindow ( ) ;
  101. }
  102.  
  103.  
  104. void
  105. Message ( unsigned char * message ) {
  106.  
  107. static short refNum = 0 ;
  108. long len ;
  109. static unsigned long last = 0 ;
  110.  
  111.     do {
  112.         Idle ( ) ;
  113.     } while ( TickCount ( ) < last + 3 ) ;
  114.     last = TickCount ( ) ;
  115.  
  116.     if ( ! message ) {
  117.         if ( refNum ) {
  118.             FSClose ( refNum ) ;
  119.             FlushVol ( NULL , 0 ) ;
  120.         }
  121.         refNum = 0 ;
  122.         return ;
  123.     }
  124.     if ( ! refNum ) {
  125.         Create ( message_file , 0 , 'MPS ' , 'TEXT' ) ;
  126.         Try ( FSOpen ( message_file , 0 , & refNum ) ) ;
  127.         Try ( SetEOF ( refNum , 0L ) ) ;
  128.     }
  129.     if ( refNum ) {
  130.         len = * message ;
  131.         Try ( FSWrite ( refNum , & len , message + 1 ) ) ;
  132.     }
  133.     SetWindowText ( message ) ;
  134. }
  135.  
  136.  
  137. static void
  138. MakeWindow ( ) {
  139.  
  140.     window = GetNewWindow ( 128 , NULL , NULL ) ;
  141.     if ( ! window ) {
  142.         Try ( -192 ) ;
  143.     }
  144.     windowText = NewHandle ( 0L ) ;
  145.     Message ( "\pWelcome!\r" ) ;
  146.     SelectWindow ( window ) ;
  147.     ShowWindow ( window ) ;
  148. }
  149.  
  150.  
  151. void
  152. main ( ) {
  153.  
  154. CInfoPBRec rec ;
  155.  
  156.     InitMac ( ) ;
  157.     MakeWindow ( ) ;
  158.     rec . hFileInfo . ioNamePtr = folder_to_munge ;
  159.     rec . hFileInfo . ioVRefNum = 0 ;
  160.     rec . hFileInfo . ioDirID = 0 ;
  161.     rec . hFileInfo . ioFDirIndex = 0 ;
  162.     Try ( PBGetCatInfoSync ( & rec ) ) ;
  163.     if ( rec . hFileInfo . ioFlAttrib & 0x10 ) {    
  164.         MungeFolder ( rec . hFileInfo . ioDirID ) ;
  165.     } else {
  166.         Message ( "\pIt's not a folder!" ) ;
  167.     }
  168.     Message ( "\pClick To Exit\r" ) ;
  169.     Message ( NULL ) ;
  170.     Idle ( ) ;
  171. }
  172.